#include "ConfigData.h"
#include "simpleini/SimpleIni.h"

ConfigData::ConfigData()
{
    
}

ConfigData::~ConfigData()
{
}

ConfigData* ConfigData::instance()
{
	static ConfigData instanceS;

    return &instanceS;
}

void ConfigData::readConfig()
{
    CSimpleIniA ini;
    SI_Error rc = ini.LoadFile("config/GlobalCfg.ini");
    if (rc < 0) 
    { 
    }

    MotionReqServerPort = atoi(ini.GetValue("Motion_Server", "MotionRequestServerPort", "30500"));
	MotionReqServerIP = ini.GetValue("Motion_Server", "MotionReqServerIP", "192.168.0.200");
	
	EthercatPortName = ini.GetValue("Ethercat_Server", "Ethercat_Net_Port", "enp1s0");
	
	RobotType = atoi(ini.GetValue("Robot_Common", "RobotType", "2"));
	AxisCount = atoi(ini.GetValue("Robot_Common", "AxisCount", "3"));
	AxisSpeed = atoi(ini.GetValue("Robot_Common", "AxisSpeed", "1000"));
	AxisAcc = atoi(ini.GetValue("Robot_Common", "AxisAcc", "500"));
	AxisDec = atoi(ini.GetValue("Robot_Common", "AxisDec", "500"));
	
	AxisCoderValue_x = ini.GetLongValue("Robot_Common", "AxisCoderValue_x", 262144);
	AxisCoderValue_y = ini.GetLongValue("Robot_Common", "AxisCoderValue_y", 262144);
	AxisCoderValue_z = ini.GetLongValue("Robot_Common", "AxisCoderValue_z", 262144);
	AxisCoderValue_r = ini.GetLongValue("Robot_Common", "AxisCoderValue_r", 262144);
	
	rStill = ini.GetDoubleValue("Robot_Delta", "rStill", 0);
	rMoving = ini.GetDoubleValue("Robot_Delta", "rMoving", 0);
	theta1 = ini.GetDoubleValue("Robot_Delta", "theta1", 0);
	theta2 = ini.GetDoubleValue("Robot_Delta", "theta2", 0);
	theta3 = ini.GetDoubleValue("Robot_Delta", "theta3", 0);
	lenActive = ini.GetDoubleValue("Robot_Delta", "lenActive", 0);
	lenPassive = ini.GetDoubleValue("Robot_Delta", "lenPassive", 0);
	lenPC = ini.GetDoubleValue("Robot_Delta", "lenPC", 0);
	angleOffset = ini.GetDoubleValue("Robot_Delta", "angleOffset", 0);
	
	decRatio = ini.GetDoubleValue("Robot_Delta", "DecelerationRatio", 30.0f);

}

void ConfigData::writeConfig()
{
    
}

